package pe.edu.claretiano.admisionmatricula.admision.daoimpl;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;

import pe.edu.claretiano.admisionmatricula.admision.dao.DocumentoPresentadoDao;
import pe.edu.claretiano.admisionmatricula.bean.DocumentoPresentado;
import pe.edu.claretiano.admisionmatricula.bean.DocumentoRequerido;
import pe.edu.claretiano.admisionmatricula.bean.SolicitudAdmision;
import pe.edu.claretiano.admisionmatricula.bean.SolicitudMatricula;
import pe.edu.claretiano.admisionmatricula.factory.MyBatisConnectionFactory;

public class DocumentoPresentadoDaoImpl implements DocumentoPresentadoDao {
	
	private final static Logger logDocumentoPresentadoDaoImpl = Logger
			.getLogger(ApoderadoDaoImpl.class);
	
	private SqlSessionFactory sqlSessionFactory;
	
	public DocumentoPresentadoDaoImpl(){
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}


	@Override
	public Integer insertarDocumentoPresentado(
			DocumentoPresentado objDocumentoPresentado) {
		
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado=0;
		try {
			resultado=session.insert("DocumentoPresentado.insertarDocumentoPresentado", objDocumentoPresentado);			
			session.commit();			
		} catch (Exception ex) {
			logDocumentoPresentadoDaoImpl.error(ex.getMessage());				
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}


	@Override
	public List<DocumentoPresentado> listarDocumentoPresentado(
			SolicitudAdmision objSolicitudAdmision) {
		
		SqlSession session = sqlSessionFactory.openSession();
		List<DocumentoPresentado> lstDocPres=new ArrayList<DocumentoPresentado>();				
		try {
			lstDocPres =  (List<DocumentoPresentado>)session.selectList("DocumentoPresentado.listarDocumentoPresentado", objSolicitudAdmision);
		} catch (Exception ex) {
			logDocumentoPresentadoDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstDocPres;
	}


	@Override
	public Integer actualizaDocumentoPresentado(
			DocumentoPresentado objDocumentoPresentado) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado=0;
		try {
			resultado=session.insert("DocumentoPresentado.actualizarDocumentoPresentado", objDocumentoPresentado);			
			session.commit();			
		} catch (Exception ex) {
			logDocumentoPresentadoDaoImpl.error(ex.getMessage());				
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}


	@Override
	public Integer insertarDocumentoPresentadoMatricula(DocumentoPresentado objDocumentoPresentado) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado=0;
		try {
			resultado=session.insert("DocumentoPresentado.insertarDocumentoPresentadoMatricula", objDocumentoPresentado);			
			session.commit();			
		} catch (Exception ex) {
			logDocumentoPresentadoDaoImpl.error(ex.getMessage());				
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}


	@Override
	public List<DocumentoPresentado> listarDocumentoPresentadoMatricula(SolicitudMatricula solicitudMatricula) {
		SqlSession session = sqlSessionFactory.openSession();
		List<DocumentoPresentado> lstDocPres=new ArrayList<DocumentoPresentado>();				
		try {
			lstDocPres =  (List<DocumentoPresentado>)session.selectList("DocumentoPresentado.listarDocumentoPresentadoMatricula", solicitudMatricula);
		} catch (Exception ex) {
			logDocumentoPresentadoDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstDocPres;
	}

}
